内网穿透教程 | 老鬼
上篇推文:
内网穿透,也就是 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。(来自百度百科,非常官方的解释)
其实说白了就是我内部局域网提供的服务能够正常被互联网所访问,让外网访问你的内网没有距离。
# frp
frp是国内开源的穿透工具,支持 TCP、UDP、HTTP、HTTPS 等多种协议。目前最新版本为0.36.2,并且一直在维护更新。
鬼哥的服务器系统为Windows对应使用frp_0.36.2_linux_adm64.tar.gz,本机系统为Mac OS X对应使用frp_0.36.2_darwin_amd64.tar.gz。
# 下载方式
GitHub下载链接:https://github.com/fatedier/frp/releases
1、frp自主搭建需要一个有公网ip的服务器,鬼哥使用的是阿里云ECS。
利用ssh工具连接到阿里云ECS,再使用lrzsz工具的rz命令将frp_0.36.2_linux_amd64.tar.gz上传到服务器,而压缩包frp_0.36.2_darwin_amd64.tar.gz直接在本机解压。
2、终端命令
2.1、服务器
这里使用wget下载
wget
https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
解压
tar -xzvf frp_0.36.2_linux_amd64.tar.gz
2.2、本机
使用curl下载
curl -O
https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_darwin_amd64.tar.gz
解压
tar -xzvf frp_0.36.2_darwin_amd64.tar.gz
# 压缩包文件说明
每个压缩包都包含以下文件及一个systemd文件夹:
- frpc —— 客户端可执行二进制文件
- frpc_full.ini —— 包含全部配置项的客户端配置文件
- frpc.ini —— 客户端使用的配置文件,包含最简配置
- frps —— 服务端可执行二进制文件
- frps_full.ini —— 包含全部配置项的服务端配置文件
- frps.ini —— 服务端使用的配置文件,包含最简配置
- systemd —— 文件夹,用于将frpc和frps添加为服务的配置,linux下使用systemd作为守护程序、mac os使用launchd作为守护程序
# 服务端配置及启动
1、在服务器上打开frps.ini:
务必要保证当前已进入工作目录/root/frp_0.36.2_linux_amd64/
vi frps.ini
2、配置frps要监听的端口:按下i进入编辑模式,在末尾增加一行:vhost_http_port = 8080,使frps.ini最终配置如下:
vhost_http_port监听的端口不能被占用,否则会导致frps不能启动,端口可根据实际需要修改;bind_port端口为frp服务端和客户端连接通信的端口,默认为7000。
[common]
bind_port = 7000
vhost_http_port = 8080
3、保存配置并退出:按下Esc,输入:wq
4、启动frps程序:
./frps -c ./frps.ini
如遇permission denied错误,表明frps可能没有运行权限,则先赋权:
chmod 700 frps
然后再次执行启动命令。
# 客户端配置和启动
1、在本机进入frp_0.36.2_darwin_amd64目录,打开frpc.ini文件;
2、以配置访问内网的web服务为例,最终修改frpc.ini如下:
x.x.x.x为运行frps的服务器公网ip,local_port为本机启动web服务对应的端口
[common]
server_addr = x.x.x.x
server_port = 7000
[web]
type = http
local_ip = 127.0.0.1
local_port = 3000
3、启动frpc程序:
sudo ./frpc -c ./frpc.ini
# 结语
OK,简单说说。如果有什么问题,欢迎大家留言指出!
点击右下角的点赞和在看,明天会发生一件你期待已久的好事